package fornecedor;

import compra.Compra;
import endereco.Endereco;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OneToOne;

import produto.Produto;

/**
 * Fornecedor generated by hbm2java
 *  @author Alberto Medeiros
 */
@Entity
@Table(name = "fornecedor", schema = "public")
@NamedQuery(name = "fornecedor.listar", query = "from Fornecedor")
public class Fornecedor implements java.io.Serializable {

    private int idFornecedor;
    private Boolean statusFornecedor;
    private String contato;
    private String emailFornecedor;
    private String celularFornecedor;
    private String foneFornecedor;
    private String descricaoFornecedor;
    private Endereco enderecos;
    private List<Produto> produtos;
    private List<Compra> objCompra;

    public Fornecedor() {
    }

    public Fornecedor(int idFornecedor) {
        this.idFornecedor = idFornecedor;
    }

    public Fornecedor(int idFornecedor, String contato, String emailFornecedor, String celularFornecedor, String foneFornecedor, String descricaoFornecedor, Boolean statusFornecedor, Endereco enderecos, List<Produto> produtos, List<Compra> objCompra) {
        this.idFornecedor = idFornecedor;
        this.contato = contato;
        this.emailFornecedor = emailFornecedor;
        this.celularFornecedor = celularFornecedor;
        this.foneFornecedor = foneFornecedor;
        this.descricaoFornecedor = descricaoFornecedor;
        this.enderecos = enderecos;
        this.produtos = produtos;
        this.statusFornecedor = statusFornecedor;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_fornecedor", unique = true, nullable = false)
    public int getIdFornecedor() {
        return this.idFornecedor;
    }

    public void setIdFornecedor(int idFornecedor) {
        this.idFornecedor = idFornecedor;
    }

    @Column(name = "contato", length = 50)
    public String getContato() {
        return this.contato;
    }

    public void setContato(String contato) {
        this.contato = contato;
    }

    @Column(name = "email_fornecedor", length = 100)
    public String getEmailFornecedor() {
        return this.emailFornecedor;
    }

    public void setEmailFornecedor(String emailFornecedor) {
        this.emailFornecedor = emailFornecedor;
    }

    @Column(name = "celular_fornecedor", length = 10)
    public String getCelularFornecedor() {
        return this.celularFornecedor;
    }

    public void setCelularFornecedor(String celularFornecedor) {
        this.celularFornecedor = celularFornecedor;
    }

    @Column(name = "fone_fornecedor", length = 10)
    public String getFoneFornecedor() {
        return this.foneFornecedor;
    }

    public void setFoneFornecedor(String foneFornecedor) {
        this.foneFornecedor = foneFornecedor;
    }

    @Column(name = "descricao_fornecedor", length = 100)
    public String getDescricaoFornecedor() {
        return this.descricaoFornecedor;
    }

    public void setDescricaoFornecedor(String descricaoFornecedor) {
        this.descricaoFornecedor = descricaoFornecedor;
    }

    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "id_endereco", insertable = true, updatable = true)
    public Endereco getEnderecos() {
        return this.enderecos;
    }

    public void setEnderecos(Endereco enderecos) {
        this.enderecos = enderecos;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "fornecedor")
    public List<Produto> getProdutos() {
        return this.produtos;
    }

    public void setProdutos(List<Produto> produtos) {
        this.produtos = produtos;
    }

    @Column(name = "status_fornecedor")
    public Boolean getStatusFornecedor() {
        return statusFornecedor;
    }

    public void setStatusFornecedor(Boolean statusFornecedor) {
        this.statusFornecedor = statusFornecedor;
    }

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "id_funcionario")
    public List<Compra> getobjCompra() {
        return this.objCompra;
    }

    public void setobjCompra(List<Compra> objCompra) {
        this.objCompra = objCompra;
    }
}
